﻿using System;

namespace JellystonePark.Model
{
    public class JellystoneFieldEventArgs : EventArgs
    {
        #region Fields

        private int _x;
        private int _y;

        #endregion

        #region Properties

        /// <summary>
        /// x koordináta
        /// </summary>
        public int X { get { return _x; } }

        /// <summary>
        /// y koordináta
        /// </summary>
        public int Y { get { return _y; } }

        #endregion

        #region Constructor

        public JellystoneFieldEventArgs(int x, int y)
        {
            _x = x;
            _y = y;
        }

        #endregion
    }

    public class JellystoneVectorEventArgs : JellystoneFieldEventArgs
    {
        #region Fields

        private int _xt;
        private int _yt;

        #endregion

        #region Properties

        /// <summary>
        /// x célkoordináta 
        /// </summary>
        public int XTo { get { return _xt; } }

        /// <summary>
        /// y célkoordináta
        /// </summary>
        public int YTo { get { return _yt; } }

        #endregion

        #region Constructor

        /// <summary>
        /// JellystoneMovement eseményargumentum konstruktora.
        /// </summary>
        /// <param name="x">x forráskoordináta</param>
        /// <param name="y">y forráskoordináta</param>
        /// <param name="xt">x célkoordináta</param>
        /// <param name="yt">y célkoordináta</param>
        public JellystoneVectorEventArgs(int xf, int yf, int xt, int yt) : base(xf, yf)
        {
            _xt = xt;
            _yt = yt;
        }
        
        #endregion
    }

    public class JellystoneResultEventArgs : EventArgs
    {
        private int _timeElapsed;
        private int _steps;
        private int _basketsFounded;
        private int _basketsAll;
        private bool _isWon;

        /// <summary>
        /// 
        /// </summary>
        public int TimeElapsed { get { return _timeElapsed; } }

        /// <summary>
        /// 
        /// </summary>
        public int Steps { get { return _steps; } }

        /// <summary>
        /// 
        /// </summary>
        public int BasketsFounded { get { return _basketsFounded; } }

        /// <summary>
        /// 
        /// </summary>
        public int BasketsAll { get { return _basketsAll; } }

        /// <summary>
        /// 
        /// </summary>
        public bool IsWon { get { return _isWon; } }

        /// <summary>
        /// JellystoneResult eseményargumentum konstruktora.
        /// </summary>
        /// <param name="timeElapsed"></param>
        /// <param name="steps"></param>
        /// <param name="basketsFounded"></param>
        public JellystoneResultEventArgs(int timeElapsed, int steps, int basketsFounded, int basketsAll, bool isWon)
        {
            _timeElapsed = timeElapsed;
            _steps = steps;
            _basketsFounded = basketsFounded;
            _basketsAll = basketsAll;
            _isWon = isWon;
        }
    }
}
